### Python 循环语句

# a = 1
# while a < 10:  # 同样需要注意冒号和缩进。另外，在 Python 中没有 do..while 循环。
#     print(a,end=',')
#     a += a


### 计算0-100的和



# a = 1
# sum = 0
# n = 100
# while a <= n:
#     sum = sum + a
#     a += 1
#     # print(sum,end=',')
#     print("1到 %d 之和为: %d" % (n,sum))   # 输出结果每次相加都输出，而没有只输出最后的结果；（原因：缩进的问题，没有缩进）


from ast import Num
from platform import java_ver
from turtle import pensize


n = 100
 
sum = 0
a = 1
while a <= n:
    sum = sum + a
    a += 1
 
print("\n1 到 %d 之和为: %d \n" % (n,sum))   # 缩进，输出只有一行




###  无限循环

# new = 1
# while new == 1:                              # 通过条件判断，永远不为false
#     print(input("请输入一个数字"),new)        # 无限循环在服务器上客户端的实时请求非常有用
# print("Good Day!")


### while 循环使用 else 语句
# 如果 while 后面的条件语句为 false 时，则执行 else 的语句块。
# 格式
# while <expr>:                                 # expr 条件语句为 true 则执行 statement(s) 语句块，如果为 false，则执行 additional_statement(s)。
#     <statement(s)>
# else:
#     <additional_statement(s)>



### 循环输出数字，并判断大小

num = 0
while num < 5:
    print(num,"小于5")
    num += 1
else:
    print(num)


### 简单语句组,类似if语句的语法，如果你的while循环体中只有一条语句，你可以将该语句与while写在同一行中

# flag = 1
# while (flag): print("Good Day")
# print("循环结束")



### for 语句
# Python for 循环可以遍历任何可迭代对象，如一个列表或是一个字符串
# 格式
    # for <variable> in <sequence>:
    #     <statements>
    # else:
    #     <statements>

##  Python for 循环实例

# 实例一
languages = ['c','java','php','python']
for x in languages:
    print(x,type(x),'\n')

# 实例二
list = ['Google','Baidu','Tianmao','Taobao']
for i in list:
    if i == 'Baidu':
        print("跳出循环体")         # 执行脚本后，在循环到 "Baidu"时会跳出循环体
        break
    else:
        print(i)
print("循环结束!",list[2],'\n')


### range() 函数 
# 如果你需要遍历数字序列，可以使用内置range()函数。它会生成数列
for i in range(51):
    print(i,end=",")
print('')
for i in range(5,15):
    print(i,end=",")

print('')
# 也可以使range以指定数字开始并指定不同的增量(甚至可以是负数，有时这也叫做'步长'):
for i in range(0,100,5):   # 5 是步长
    print(i,end=",")
print('')
# 步长也可以为负数
for i in range(-10,-100,-5):
    print(i,end=",")

print('')

# 结合range() 和 len（）函数遍历一个序列的索引

list = ['Google','Baidu','Kuake','Huohu']
print('len(list) 输出的是：',len(list))
for i in range(len(list)):
    print(i,list[i])

print('')

# 使用range（）函数来创建一个列表

 # >>>list(range(5))
 #   [0,1,2,3,4]



 ### break 与continue 语句及循环中的else语句

newlist = ['Google','Baidu','Kuake','Huohu']
for i in newlist:
    print('i 指的是',i)
    print('len(list) 指的是：',len(list))
    if len(list) != 4:
        continue                # continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句，然后继续进行下一轮循环。
    print(f"Hello ,{i}")
     
    if i == 'Kuake':
        break                   # break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止，任何对应的循环 else 块将不执行
print("循环结束!")

print('')

# 实例 while中使用break
n = 5
while n > 0:
    n -= 1
    if n == 2:
        break                   # break 执行时，跳出整个while or for 循环
    print(n)
print('循环结束！')

print('')

# 实例 while 中使用 continue
n = 5
while n > 0:
    n -= 1
    if n == 2:
        continue                # continue 执行时，当前循环之后的语句不执行，当前循环停止，继续在while or for 中执行下次循环
    print(n)
print("continue循环结束")

print('')

# 实例二
for str in 'Good Day!':
    if str == 'a':
        break
    print('当前字母为：',str)

print('')

var = 10
while var > 0:
    print('当前变量的值为:',var)
    var -= 1
    if var == 5:
        break
print('GoodDay!')

print('')

# 循环字符串 'Good Day!',遇到 o ，跳过不输出
for str in 'Good Day!':
    if str == 'o':
        continue
    print(str,end='')

print('')

### 循环语句可以有 else 子句，它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行，但循环被 break 终止时不执行。
# 查询质数实例
for num in range(2,10):
    for i in range(2,num):
        if i%num == 0:
            print(num,'等于：',i,'*',num//i)
            break
    else:
        # 循环中没有找到元素
        print(num,"是质数")


print('')
### Pass 语句
# Python pass是空语句，是为了保持程序结构的完整性。pass 不做任何事情，一般用做占位语句

# while True:
#     pass # 等待键盘中断




# 九九乘法则
#外边一层循环控制行数
#i是行数
# i=1
# while i<=9:
#      #里面一层循环控制每一行中的列数
#      j=1
#      while j<=i:
#           mut =j*i
#           print("%d*%d=%d"%(j,i,mut), end="  ")
#           j+=1
#      print("")
#      i+=1

